import useUserStore from '@/store/modules/user';
import pinia from './store'
import nprogress from 'nprogress';
import "nprogress/nprogress.css";
import router from '@/router';

let userStore = useUserStore(pinia);

// 全局路由守卫
router.beforeEach(async (to: any, from: any, next: any) => {
    nprogress.start(); // 开始进度条
    let token = userStore.token
    if (token) {
        // 如果有token
        if (to.path === '/login') {
            // 如果是登录页面，直接跳转到首页
            next({ path: '/' });
        } 
        else {
            // 如果不是登录页面，检查用户信息是否已加载
            if (!userStore.userName) {
                try {
                    // 获取用户信息
                    await userStore.getUserInfo();
                    next({...to}); // 继续路由导航
                } catch (error) {
                    // 获取用户信息失败，重定向到登录页面
                    userStore.logout(); // 清除token和用户信息
                    next({ path: '/login', query: { redirect: to.path } });
                }
            } else {
                next(); // 用户信息已加载，继续路由导航
            }
        }
    } else {
        // 如果没有token，重定向到登录页面
        if (to.path === '/login') {
            next(); // 如果是登录页面，直接放行
        } else {
            next({ path: '/login', query: { redirect: to.path } }); // 否则重定向到登录页面
        }
    }

})



// 全局后置钩子
router.afterEach(() => {
    // 关闭进度条
    nprogress.done();
}
);